home *** CD-ROM | disk | FTP | other *** search
/ All for Cell Phones: Sony Ericsson / Sony-Ericsson 2004.iso / Java / Micromail 103 / MicroMail.jar / POP3Reader.class (.txt) < prev    next >
Encoding:
Java Class File  |  2001-09-07  |  3.9 KB  |  200 lines

  1. public class POP3Reader {
  2.    protected static long idleTime = 0L;
  3.    protected static boolean popDebug = false;
  4.    protected static int popMessageCount;
  5.  
  6.    public static boolean deleteMessageFromServer(int var0) {
  7.       Globals.writeLine(Globals.POP3_DELE + var0);
  8.       if (!Globals.waitForMessage(Globals.RESPONSE_OK, true)) {
  9.          MicroMail.printInfo("Error deleting message #" + var0 + "  from server");
  10.       } else {
  11.          MicroMail.printInfo("Message #" + var0 + " deleted from server");
  12.       }
  13.  
  14.       return true;
  15.    }
  16.  
  17.    public static Message getMessageAtOnce(int var0, int var1) {
  18.       Object var2 = null;
  19.       Message var3;
  20.       if (readWholeMessage(var0, var1)) {
  21.          var3 = parseMessage(var1);
  22.       } else {
  23.          var3 = null;
  24.       }
  25.  
  26.       System.gc();
  27.       var3.unread = true;
  28.       return var3;
  29.    }
  30.  
  31.    public static Message getMessageHeaderOnly(int var0) {
  32.       Object var1 = null;
  33.       Globals.writeLine(Globals.POP3_TOP + var0 + " 0");
  34.       if (!Globals.waitForMessage(Globals.RESPONSE_OK, true)) {
  35.          return null;
  36.       } else {
  37.          int var2 = Globals.readHeader();
  38.          String var3 = new String(Globals.byteArray, 0, var2);
  39.          System.out.println("size:" + var2 + "," + var3);
  40.          Message var4 = parseMessage(var2);
  41.          var4.printProperties();
  42.          System.out.println("after parse");
  43.          var4.unread = true;
  44.          var4.body = "";
  45.          System.gc();
  46.          return var4;
  47.       }
  48.    }
  49.  
  50.    public static String[] getMessageIDs(int var0) {
  51.       int var1 = -1;
  52.       int var2 = -1;
  53.       String[] var3 = new String[var0];
  54.       Globals.writeLine(Globals.POP3_UIDL);
  55.       if (!Globals.waitForMessage(Globals.RESPONSE_OK, true)) {
  56.          return null;
  57.       } else {
  58.          int var4 = 0;
  59.  
  60.          while((var2 = Globals.readLine()) > -1 && !Globals.startsWith('.', 0)) {
  61.             if (var4 < var0) {
  62.                var1 = Globals.indexOf(' ', 0, var2) + 1;
  63.                if (var1 > 0) {
  64.                   var3[var4] = new String(Globals.byteArray, var1, var2 - var1);
  65.                } else {
  66.                   var3[var4] = null;
  67.                }
  68.  
  69.                ++var4;
  70.             }
  71.          }
  72.  
  73.          System.gc();
  74.          return var3;
  75.       }
  76.    }
  77.  
  78.    public static int[] getMessageLengths(int var0) {
  79.       int var1 = -1;
  80.       int var2 = -1;
  81.       int[] var3 = new int[var0];
  82.       Globals.writeLine(Globals.POP3_LIST);
  83.       if (!Globals.waitForMessage(Globals.RESPONSE_OK, true)) {
  84.          return null;
  85.       } else {
  86.          int var4 = 0;
  87.  
  88.          while((var2 = Globals.readLine()) > -1 && !Globals.startsWith('.', 0)) {
  89.             if (var4 < var0) {
  90.                var1 = Globals.indexOf(' ', 0, var2) + 1;
  91.                if (var1 > -1) {
  92.                   var3[var4] = Globals.makeInt(var1, var2 - 1);
  93.                }
  94.  
  95.                ++var4;
  96.             }
  97.          }
  98.  
  99.          System.gc();
  100.          return var3;
  101.       }
  102.    }
  103.  
  104.    public static int getMessagesCount() {
  105.       int var0 = -1;
  106.       Globals.writeLine(Globals.POP3_STAT);
  107.       var0 = Globals.readLine();
  108.       var0 = Globals.indexOf(' ', 4, var0);
  109.       var0 = Globals.makeInt(4, var0 - 1);
  110.       System.gc();
  111.       return var0;
  112.    }
  113.  
  114.    public static Message parseMessage(int var0) {
  115.       int var1 = 0;
  116.       int var2 = 1;
  117.       int var3 = 0;
  118.       boolean var6 = false;
  119.       Message var7 = new Message();
  120.       var7.body = null;
  121.       Object var9 = null;
  122.  
  123.       for(int var4 = var0; var1 < var4 & (var6 ^ true); var1 = var2 + 1) {
  124.          var2 = Globals.indexOf('\n', var1, var4);
  125.          if (var2 < 0) {
  126.             var2 = var0;
  127.          }
  128.  
  129.          if (!Globals.startsWith(' ', var1) && !Globals.startsWith('\t', var1)) {
  130.             String var8 = new String(Globals.byteArray, var1, var2 - var1);
  131.             var3 = Message.startsWithHeaderItem(var8);
  132.             if (var3 > -1) {
  133.                var7.setItem(var8, var3);
  134.             }
  135.          } else {
  136.             var7.appendItem(new String(Globals.byteArray, var1, var2 - var1), var3);
  137.          }
  138.  
  139.          var6 = var2 == var1 + 1;
  140.       }
  141.  
  142.       System.gc();
  143.       Object var10 = null;
  144.       String var15 = var7.contentType;
  145.       if (var15.startsWith(" multipart")) {
  146.          int var11 = var15.indexOf("boundary");
  147.          var15 = var15.substring(var11 + 10, var15.length() - 2);
  148.       } else {
  149.          var15 = null;
  150.       }
  151.  
  152.       if (var15 != null) {
  153.          var6 = false;
  154.          var1 = Globals.indexOf(var15, var2, var0) + var15.length();
  155.  
  156.          while(!var6) {
  157.             var2 = Globals.indexOf(var15, var1, var0);
  158.             if (var2 > -1) {
  159.                int var5 = Globals.indexOf("\n\r\n", var1, var0);
  160.                if (Globals.indexOf("text/plain", var1, var5) > -1) {
  161.                   Globals.bodyStart = var5 + 2;
  162.                   Globals.bodyLen = var2 - var5 - 4;
  163.                   var6 = true;
  164.                }
  165.  
  166.                var1 = var2 + var15.length();
  167.             } else {
  168.                var6 = true;
  169.             }
  170.          }
  171.       } else {
  172.          Globals.bodyStart = var1;
  173.          Globals.bodyLen = var0 - var1;
  174.       }
  175.  
  176.       System.gc();
  177.       return var7;
  178.    }
  179.  
  180.    public static boolean readWholeMessage(int var0, int var1) {
  181.       Globals.writeLine(Globals.POP3_RETR + var0);
  182.       if (!Globals.waitForMessage(Globals.RESPONSE_OK, true)) {
  183.          return false;
  184.       } else {
  185.          try {
  186.             Globals.in.read(Globals.byteArray, 0, var1);
  187.             if ((char)Globals.byteArray[var1 - 3] != '.') {
  188.                Globals.in.read();
  189.             }
  190.  
  191.             System.gc();
  192.             return true;
  193.          } catch (Exception var3) {
  194.             ((Throwable)var3).printStackTrace();
  195.             return false;
  196.          }
  197.       }
  198.    }
  199. }
  200.